home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Info-Mac 3
/
Info_Mac_1994-01.iso
/
Development
/
General
/
SpriteWorld 1.0b3
/
Headers
/
SpriteWorld.h
< prev
next >
Wrap
Text File
|
1993-06-07
|
4KB
|
113 lines
///--------------------------------------------------------------------------------------
// SpriteWorld.h
//
// Created: Wednesday, May 29, 1991 at 10:43:28 PM
// By: Tony Myles
//
// Copyright: © 1991-93 Tony Myles, All rights reserved worldwide
//
// Description: constants, structures, and prototypes for sprite worlds
///--------------------------------------------------------------------------------------
#ifndef __SPRITEWORLD__
#define __SPRITEWORLD__
#ifndef __SPRITELAYER__
#include "SpriteLayer.h"
#endif
#ifndef __SPRITE__
#include "Sprite.h"
#endif
#ifndef __FRAME__
#include "Frame.h"
#endif
#ifndef SW_PASCAL
#define SW_PASCAL
#endif
///--------------------------------------------------------------------------------------
// sprite world error constants
///--------------------------------------------------------------------------------------
enum
{
kQuickDrawTooOldErr = 100,
kTimeMgrNotPresentErr,
kTimeMgrTooOldErr,
kMaxFramesErr, // attempt to exceed maximum number of frames for a sprite
kInvalidFramesIndexErr // frame index out of range
};
///--------------------------------------------------------------------------------------
// sprite world type definitions
///--------------------------------------------------------------------------------------
typedef struct SpriteWorldRec SpriteWorldRec;
typedef SpriteWorldRec *SpriteWorldPtr, **SpriteWorldHdl;
///--------------------------------------------------------------------------------------
// sprite world data structure
///--------------------------------------------------------------------------------------
struct SpriteWorldRec
{
SpriteLayerPtr headSpriteLayerP; // head of the sprite layer linked list
SpriteLayerPtr tailSpriteLayerP; // tail of the sprite layer linked list
FramePtr windowFrameP; // frame for drawing to the screen
FramePtr backFrameP; // frame for drawing from the background
FramePtr loadFrameP; // frame for drawing to the loader
DrawProcPtr eraseDrawProc; // callback for erasing sprites offscreen
MaskDrawProcPtr screenDrawProc; // callback for drawing sprite pieces onscreen
long userData; // reserved for user
};
///--------------------------------------------------------------------------------------
// sprite world function prototypes
///--------------------------------------------------------------------------------------
#ifdef __cplusplus
extern "C" {
#endif
SW_PASCAL OSErr SWEnterSpriteWorld(void);
SW_PASCAL void SWExitSpriteWorld(void);
SW_PASCAL OSErr SWCreateSpriteWorld(SpriteWorldPtr *spriteWorldP, FramePtr windowFrameP, FramePtr backFrameP, FramePtr loadFrameP);
SW_PASCAL OSErr SWCreateSpriteWorldFromWindow(SpriteWorldPtr* spriteWorldP, CWindowPtr srcWindowP, Rect* worldRect);
SW_PASCAL void SWDisposeSpriteWorld(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWAddSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr spriteLayerP);
SW_PASCAL void SWRemoveSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr spriteLayerP);
SW_PASCAL void SWSwapSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr srcSpriteLayerP, SpriteLayerPtr dstSpriteLayerP);
SW_PASCAL SpriteLayerPtr SWGetNextSpriteLayer(SpriteWorldPtr spriteWorldP, SpriteLayerPtr curSpriteLayerP);
SW_PASCAL void SWLockSpriteWorld(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWUnlockSpriteWorld(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWSetPortToBackGround(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWSetPortToWindow(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWSetSpriteWorldEraseProc(SpriteWorldPtr spriteWorldP, DrawProcPtr eraseProc);
SW_PASCAL void SWSetSpriteWorldDrawProc(SpriteWorldPtr spriteWorldP, MaskDrawProcPtr drawProc);
SW_PASCAL void SWUpdateSpriteWorld(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWProcessSpriteWorld(SpriteWorldPtr spriteWorldP);
SW_PASCAL void SWAnimateSpriteWorld(SpriteWorldPtr spriteWorldP);
static void SWUpdateSpriteOffscreen(SpriteWorldPtr spriteWorldP, SpritePtr srcSpriteP);
#ifdef __cplusplus
};
#endif
#endif /* __SPRITEWORLD__ */